import copy

from TestToolsV2.common.Mark import mark
from TestToolsV2.model.Searcher import searcher
from TestToolsV2.view.OpenDialog import openDialog
from TestToolsV2.view.SearchPathDialog import searchPathDialog
from TestToolsV2.view.SettingDialog import settingDialog
from TestToolsV2.view.ShowDataDialog import showDataDialog


class activityDatas:
    """
    活动检查数据缓存器
    """

    def __init__(self):
        # 需要初始化，无需赋值的属性
        self.info = []  # 信息收集器
        self.eInfo = []  # 错误信息收集
        self.reAllInfo = []  # 规划查询详细信息列表
        self.taAllInfo = []  # 基础表查询详细信息列表
        self.reDiffInfo = []  # 规划差异信息列表
        self.taDiffInfo = []  # 基础表差异信息列表
        self.diffIndex = []  # 差异行数坐标
        self.reTitles = []  # 规划框抬头关键字列表
        self.taTitles = []   # 基础表框抬头关键字列表
        self.diffInfo = []  # 差异化内容下标列表
        self.offsetIndex = []  # 文本差异下标列表
        self.colorKey = 0  # 是否标志存在差异

        # 在使用过程中需要赋值的属性
        self.openDialog: openDialog = None  # 提示用的弹窗
        self.pathDialog: searchPathDialog = None  # 历史路径弹窗
        self.dataDialog: showDataDialog = None  # 比对详情弹窗
        self.settDialog: settingDialog = None  # main窗口设置弹窗
        self.searcher: searcher = None  # 查询控制器对象
        self.mark: mark = None  # 差异标记器
        self.isCosts: bool = None  # 是否有兑换消耗
        self.dirPath: str = None  # 当前检查配置表目录
        self.reEditText: str = None  # 活动查询-规划输入框文本
        self.taEditText: str = None  # 活动查询-基础表输入框文本
        self.my_reTitle: str = None  # 规划中代表道具的字段
        self.my_taTitle: str = None  # 基础表中代表道具的字段
        self.reTitleDic: dict = None  # 比对源数据下标字典
        self.taTitleDic: dict = None  # 比对目标数据下标字典
        self.reRewards: list = None  # 提取出的规划输入框中 rewards格式的二维列表
        self.taRewards: list = None  # 提取出的基础表输入框中 rewards格式的二维列表
        self.reCosts: list = None  # 规划框消耗字段
        self.taCosts: list = None  # 基础表框消耗字段
        self.allNumbers: set = None  # 所有需要读取缓存的表格品类列表


    def set_defual(self):
        """
        初始化缓存数据
        """
        self.reAllInfo.clear()
        self.taAllInfo.clear()
        self.reDiffInfo.clear()
        self.taDiffInfo.clear()
        self.info.clear()
        self.eInfo.clear()
        self.diffInfo.clear()
        self.offsetIndex.clear()
        self.colorKey = 0

    def set_dialog(self, pathDialog, dataDialog, settDialog):
        self.openDialog = openDialog()
        self.pathDialog = pathDialog
        self.dataDialog = dataDialog
        self.settDialog = settDialog

    def showAllInfo(self,showType=False):
        """
        展示比对详情窗口
        """
        if not self.reEditText or not self.taEditText:
            self.openDialog.showMessage("activityDatas => showAllInfo: 无内容展示！！！")
            return
        for x in range(len(self.taAllInfo)):
            self.taAllInfo[x] = str(self.taAllInfo[x]).replace("'", "").replace('"', "")
        reTextList = copy.deepcopy(self.reEditText.splitlines())
        if not showType:
            reTextList.pop(0)
        reText = '<br />'.join(reTextList)
        taText = '<br />'.join(self.taAllInfo)
        self.dataDialog.set_resourceEdit_html(reText)
        self.dataDialog.set_targetEdit_html(taText)
        self.dataDialog.showDialog()
